package baiqitun.stupro.subject.service;

import baiqitun.stupro.common.model.TreeModel;
import baiqitun.stupro.common.model.vo.TreeNodeVo;
import baiqitun.stupro.common.service.MyService;
import baiqitun.stupro.security.entity.SysDepart;
import baiqitun.stupro.subject.entity.SysSubject;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 科目表（专业方向表） 服务类
 * </p>
 *
 * @author kedaji
 * @since 2020-04-01
 */
public interface SysSubjectService extends MyService<SysSubject> {
    /**
     * 查询所有顶级科目树
     * @return 所有科目树
     */
    List<TreeModel<TreeNodeVo>> getRootTrees();

    /**
     * 向科目添加一条子科目
     * @param subject 科目信息
     * @return 操作是否成功
     */
    @Override
    boolean save(SysSubject subject);

    /**
     * 修改科目
     * @param subject 科目
     * @return 操作是否成功
     */
    @Override
    boolean updateById(SysSubject subject);

    /**
     * 创建带有默认科目的部门
     * @param depart 部门
     */
    void saveRootDepart(SysDepart depart);

    /**
     * 获取顶级部门（系）自带的默认科目
     * @param departId 部门id
     * @return 科目信息
     */
    SysSubject getDefaultSubjectByRootDepart(String departId);
}
